package net.comfycastle.musicplayer;

import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 리스트뷰에서 앨범의 곡 정보를 보여줄 때를 위한 Adapter
 * @author ricale
 *
 */
public class InalbumMCAdapter extends MusicCursorAdapter {	
	///////////
	//////////
	/////////   enum
	
	/** adapter와 연결된 cursor의 데이터 상태를 표시 */
	public static enum VIEWSTATE {
		/** 아티스트의 앨범의 곡 목록을 다루는 상태 */
		BYARTIST,
		/** 앨범아티스트의 곡 목록을 다루는 상태 */
		BYALBUMARTIST
	} // end VIEWSTATE
	
	///////////
	//////////
	/////////   variable
	
	/** 현재 adapter의 VIEWSTATE */
	private VIEWSTATE mViewMode;
	
	///////////
	//////////
	/////////   constructor
	
	/**
	 * 생성자
	 * @param context Adapter를 생성하는 Context
	 * @param cursor  데이터 Cursor
	 */
	public InalbumMCAdapter(Context context, Cursor cursor) {
		this(context, R.layout.listitem_inalbum, cursor, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
	} // end InalbumMCAdapter(Context, Cursor)
	
	/**
	 * 생성자
	 * @param context Adapter를 생성하는 Context
	 * @param layout  항목 뷰 레이아웃 리소스 아이디
	 * @param cursor  데이터 Cursor
	 * @param flags
	 */
	public InalbumMCAdapter(Context context, int layout, Cursor cursor, int flags) {
		super(context, layout, cursor, flags);
		mViewMode = VIEWSTATE.BYARTIST;
	} // end InalbumMCAdapter(Context, int, Cursor, int)
	
	///////////
	//////////
	/////////   setter
	
	/**
	 * 항목 뷰에 등록(binding)될 정보의 종류를 설정한다
	 * VM_BYARTIST, VM_BYALBUMARTIST 참조
	 * @paran viewMode 정보의 종류를 구분하기 위한 상수
	 */
	public void setViewState(VIEWSTATE viewState) {
		mViewMode = viewState;
	} // end setViewMode
	
	///////////
	//////////
	/////////   callback method
	
	/**
	 * 각각의 항목 뷰에 정보들을 등록(binding)하기 위한 콜백 메소드
	 */
	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		TextView tvTrack = (TextView)view.findViewById(R.id.listitem_inalbum_track);	
		TextView tvTime  = (TextView)view.findViewById(R.id.listitem_inalbum_duration);
		TextView tvTitle = (TextView)view.findViewById(R.id.listitem_inalbum_title);
		
		/// 특정 앨범에서 트랙이 1이 아닌 1001로 시작하는 것에 대한 임시조치
		int track = Integer.parseInt(cursor.getString(cursor.getColumnIndex(MPApp.TAG_TRACK))) % 1000;
		tvTrack.setText("" + track);
		tvTitle.setText(cursor.getString(cursor.getColumnIndex(MPApp.TAG_TITLE)));
		
		String duration = cursor.getString(cursor.getColumnIndex(MPApp.TAG_DURATION));
		int t = (int)(Integer.parseInt(duration) / 1000);
		duration = String.format("%02d:%02d", t / 60, t % 60);
		tvTime.setText(duration);
		
		if(mViewMode == VIEWSTATE.BYALBUMARTIST) {
			LinearLayout ll = (LinearLayout)view.findViewById(R.id.listitem_inalbum_container);
			ll.setOrientation(LinearLayout.VERTICAL);
			TextView tvArtist = (TextView)view.findViewById(R.id.listitem_inalbum_artist);
			tvArtist.setText(cursor.getString(cursor.getColumnIndex(MPApp.TAG_ARTIST)));
		} // end if
	} // end bindView
} // end InalbumMCAdapter